A computer network is a system that connects multiple devices with a multiple types of network connections. The computer network may be a Local Area Network ("LAN") that connects devices over a small geographical area, or a Wide Area Network ("WAN") that connects devices over a large geographical area. The devices in a computer network communicate with network protocols.
Different types of computer networks may be interconnected to each other to form larger computer networks (e.g., the Internet). The interconnections include LAN--LAN, LAN-WAN, WAN--WAN, LAN-WAN-LAN, and other network interconnections.
When computer networks are interconnected, network protocols in use on one network must be translated into network protocols a second network can use. Gateways are typically used to convert one network protocol into another network protocol without loss of information. The functionality of a gateway becomes complex very quickly if a large number of different protocols are used over multiple communication links. The gateway must be able to quickly identify a first network protocol on an incoming link from a first computer network and then translate the network protocol without loss of information and undue delay into a second network protocol on an outgoing link to a second computer network.
There are several problems associated with using gateways to interconnect computer networks using dissimilar network protocols. A gateway is used to determine between multiple network protocols on a communication link. When an input is received on a communication link, the gateway will typically be required to invoke multiple protocol interpreters for protocols expected from multiple computer networks. The protocol interpreters are invoked to identify and use a specific network protocol on the communication link. Invoking multiple protocol interpreters wastes significant amounts of resources on the gateway.
Another problem is that a gateway may invoke multiple protocol interpreters to look for a specific network protocol on multiple channels on a communication link. This also wastes significant resources on the gateway, especially if the gateway has a large number of communication links. The overall cost of invoking multiple protocol interpreters in the gateway dramatically increases if the gateway is connected to multiple communication links of differing types that also use multiple channels.
Yet another problem is that selected network protocols look very similar to other network protocols during the initial negotiation sequence. For example, two protocols may have similar data layouts except one uses error detection codes in its protocol data and the other one does not. This similarity often requires a gateway invoke multiple protocol interpreters to determine which protocol is actually being used. This wastes significant resources on the gateway.